package dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;

import org.hibernate.HibernateException;
import org.hibernate.Query;

import dominio.Agente;

public class AgenteDao extends GenericDaoImpl {

	public Collection<Agente> getAgentes() throws DaoException {
		try {
			String sql = "SELECT * from agente";
			PreparedStatement ps = getConnection().prepareStatement(sql);
			ps.execute();
			ResultSet rs = ps.getResultSet();

			ArrayList<Agente> agentes = new ArrayList<Agente>();

			while (rs.next()) {
				Agente a = new Agente();
				a.setId(rs.getInt("id"));
				a.setNome(rs.getString("nome"));
				a.setSalario(rs.getInt("salario"));

				agentes.add(a);
			}

			return agentes;
		} catch (Exception e) {
			throw new DaoException(e);
		}
	}
	
	public Agente findAgenteByNome(String nome) throws HibernateException, DaoException {
		String consulta = "from Agente where nome like ?";
		
		Query q = getSession().createQuery(consulta);
		
		q.setParameter(0, "%" + nome + "%");
		q.setMaxResults(1);
		
		Agente a = (Agente) q.list().get(0);
		
		return a;
		
	}
	
	public Agente findAgenteByUserLogin(String login) throws DaoException {
		
		//UsuarioDao usuarioDao = null;
		//Usuario usuario = usuarioDao.getUsuarioByLogin(login);
		
		String consulta = "from Agente where usuario.nome = ?";
		
		Query q = getSession().createQuery(consulta);
		
		q.setParameter(0, "%" + login + "%");
		q.setMaxResults(1);
		
		Agente a = (Agente) q.list().get(0);
		
		return a;
	}
}
